﻿/*
    This file is part of News Worm.

    News Worm is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    News Worm is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with News Worm.  If not, see <http://www.gnu.org/licenses/>.
 */

using System;

namespace NewsWorm {
    public class ScriptingEvents : IScriptingEvents {

        public event EventHandler<FeedItemEventArgs> NewArticle;
        public event EventHandler<FeedEventArgs> RefreshFeed;
        public event EventHandler<FeedItemEventArgs> MarkAsRead;
        public event EventHandler<FeedEventArgs> AddFeed;
        public event EventHandler<FeedEventArgs> RemoveFeed;
        public event EventHandler<FavoriteItemEventArgs> AddFavorite;
        public event EventHandler<FavoriteItemEventArgs> RemoveFavorite;

        internal void RaiseOnNewArticle( IArticle item ) {
            EventHandler<FeedItemEventArgs> handler = NewArticle;
            if ( handler != null ) {
                handler( this, new FeedItemEventArgs(item ));
            }
        }
   
        internal void RaiseOnRefreshFeed( IFeed feed ) {
            EventHandler<FeedEventArgs> handler = RefreshFeed;
            if ( handler != null ) {
                handler( this, new FeedEventArgs(feed) );
            }
        }
        
        internal void RaiseOnMarkAsRead( IArticle item ) {
            EventHandler<FeedItemEventArgs> handler = MarkAsRead;
            if ( handler != null ) {
                handler( this, new FeedItemEventArgs( item ) );
            }
        }
        
        internal void RaiseOnAddFeed( IFeed feed) {
            EventHandler<FeedEventArgs> handler = AddFeed;
            if ( handler != null ) {
                handler( this, new FeedEventArgs( feed ) );
            }
        }
        
        internal void RaiseOnRemoveFeed( IFeed feed ) {
            EventHandler<FeedEventArgs> handler = RemoveFeed;
            if ( handler != null ) {
                handler( this, new FeedEventArgs( feed ) );
            }
        }

        internal void RaiseOnAddFavorite( IFavoriteArticle favorite ) {
            EventHandler<FavoriteItemEventArgs> handler = AddFavorite;
            if ( handler != null ) {
                handler( this, new FavoriteItemEventArgs(favorite) );
            }
        }
       
        internal void RaiseOnRemoveFavorite( IFavoriteArticle favorite ) {
            EventHandler<FavoriteItemEventArgs> handler = RemoveFavorite;
            if ( handler != null ) {
                handler( this, new FavoriteItemEventArgs( favorite ) );
            }
        }
    }
}
